#include <stdio.h>


void funccc(int i, int j) {
  printf("%d, %d\n", i, j);
}


int main(int argc, char const *argv[])
{
  // int i1 = 1;
  // int i2 = 2;
  // int i3 = 3;
  // int i4 = 4;
  // int arr[4] = {1,2,3,4};
  // // int arr1[4] = {&i1, &i2, &i3, &i4};// 编译报错。
  // int brr[3][4] = {{1,2,3,4}, {11,22,33,44}, {111,222,333,444}};



  // 地址
  // printf("%p,%p,%p,%p,%p,%p\n", &arr[0], &arr[1], &arr[2], &arr[3],arr,&arr);



// int ii = 0x11223344;
// char *q;

// q = (char *) &ii;
// if (*q == 0x44) {
//     printf("Little endian\n");
// } else {
//     printf("Big endian\n");
// }

  // int * p1 = &i1;

  // // int * p2 [] = {&i1, &i2, &i3, &i4}; // 正常。
  // // printf("%d,%d,%d,%d\n", *p2[0], *p2[1], *p2[2], *p2[3]);

  // // int * p2 [] = arr; // 不论是否给 arr 加 &，都无法通过编译。
  // // printf("%d,%d,%d,%d\n", *p2[0], *p2[1], *p2[2], *p2[3]);

  // int ** p3 = &arr;
  // printf("%d,%d,%d,%d\n", p3[0], p3[1], p3[2], p3[3]);
  // printf("%d,%d,%d\n", arr, &arr[0], &arr);
  
  // int (*p4)[4] = &arr;
  
  // int * p2 [] = &arr; 


  // int *p1 = 0;
  // printf("%p,%X,%d,%d\n", p1, p1, p1, &p1);

  // int *p = NULL;
  // printf("%p,%X,%d,%d\n", p, p, p, &p);


  int arr[] = {1,2,3};
  int brr[] = {4,5,6};
  int crr[] = {7,8,9};

  int *rr[3] = {arr, brr, crr};

  // int rrr[][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
  // printf("%d\n", rrr[0][0]);

  // int *p [] = rr;

  // printf("%d\n", *rr[0]);
  // printf("%d\n", *rr[1]);
  
  printf("%d\n", *(rr[2] + 2));

  return 0;
}